/*
Coded 5/11/24 - Questions to terence.wood@anu.edu.au

This code creates each of the tables used in the online appendices.

Coded in Version 18.0 SE.
If you are using an old version of Stata you may need to install estout/esttab
You will also need to install putexcel (regardless of version I think).

Note that directories are changed and data file opened multiple times below.
This means that if you want to run this do file on its own you will need to 
replace the macros several times with your own file paths and file names.
*/


********************************************************************************
*******************************Appendix 1***************************************
********************************************************************************

/* Creates the table in Appendix 1
   
   The table compares means of continuous variables & proportions in categories
   of categorical variables between:
   1. Final and ongoing reports prior to 2019
   2. Final and ongoing reports from 2019 onwards
   3. The differece (pre-post 2019) in differences (ongoing/final reports) then 
      also compareed.
	  
    T-tests are used to test difference in means of continuous variables.
	Probability tests are used for categories of categorical variables.
	Regressions are used to calculated difference in differences.
	
	The process is as follows:
	1. Create binary variables for each category of the categorical variable
	   "Sector". (Don't need to do this for Pacific as it is already binary).
	2. Conduct prtests to test for differences in proportions for all categories
	   of categorical variables (and Pacific binary). Also use a regression to 
	   get the differences in differences.
	3. The same process with ttests and regression for continuous variables.
	4. Results from these suites of tests are stored invididually in Macros.
	5. Create a matrix and store the values from the macros in it in table form.
	6. Use putexcel to transfer values from matrix into Excel.
	
	(Strictly speaking matrix section probably redundant, but it's tidy).
*/

********************************Preliminaries***********************************

cd "$data_loc"  // Change directory to location where data are stored.
use "$data_file", clear // Open data
cd "$res_loc" // Change directory to location where analysis will occur.

*************************Change variable structure******************************
// Create binaries of individual sectors to allow for proportions tests

preserve
 
gen ag = 0
replace ag = 1 if sector ==1
label var ag "Agriculture"
gen res = 0
replace res = 1 if sector ==2
label var res "Resilience"
gen edn = 0
replace edn = 1 if sector ==3
label var edn "Education"
gen gov = 0
replace gov = 1 if sector ==4
label var gov "Governance"
gen oth = 0
replace oth = 1 if sector ==5
label var oth "Other"
gen he = 0
replace he = 1 if sector ==6
label var he "Health"
gen econ = 0
replace econ = 1 if sector ==7
label var econ "Economic"

*******Populate macros with results of prtests for categorical variables********

foreach pt in pac ag res edn gov oth he econ {	

	prtest `pt' if post2018==0, by(finalreport)
	local mu_`pt'_early_ong = r(P1)
	local mu_`pt'_early_fin = r(P2)
	local diff_`pt'_early = r(P1)-r(P2)
	local p_`pt'_early = r(p)

	prtest `pt' if post2018==1, by(finalreport)
	local mu_`pt'_late_ong = r(P1)
	local mu_`pt'_late_fin = r(P2)
	local diff_`pt'_late = r(P1)-r(P2)
	local p_`pt'_late = r(p)

	reg `pt' i.finalreport##i.post2018 
	local diff_diff_`pt' = r(table)[1,8] 
	local p_diff_diff_`pt' = r(table)[4,8]  	
}	

********Populate macros with results of ttests on duration and budget***********

foreach tt in lnbudget duration {
	ttest `tt' if post2018==0, by(finalreport)
	local mu_`tt'_early_ong = r(mu_1)
	local mu_`tt'_early_fin = r(mu_2)
	local diff_`tt'_early = r(mu_1)-r(mu_2)
	local p_`tt'_early = r(p)
	
	ttest `tt' if post2018==1, by(finalreport)
	local mu_`tt'_late_ong = r(mu_1)
	local mu_`tt'_late_fin = r(mu_2)
	local diff_`tt'_late = r(mu_1)-r(mu_2)
	local p_`tt'_late = r(p)

	reg `tt' i.finalreport##i.post2018
	local diff_diff_`tt' = r(table)[1,8] 
	local p_diff_diff_`tt' = r(table)[4,8] 
}

*************************Create and populate Matrix*****************************

// Creates empty matrix; 1st value number of columns, 2nd value number of rows
matrix res_table = J(10,10,.)

matrix rownames res_table = "Budget(ln)" Duration Pacific Agriculture Resilience ///
	Education Governance Other Health Economic // Add rownames to matrix

matrix colnames res_table = ///
	"Early Ongoing" "Early Final" "Diff Early Ongoing & Final" "p1" ///
	"Late Ongoing" "Late Final" "Diff Late Ongoing & Final" "p2" ///
	"Diff Diffs" "p3" // Add column names to matrix

// Loop through and populate matrix	
local counter = 1
	
foreach st in lnbudget duration pac ag res edn gov oth he econ {	
	
	matrix res_table[`counter',1]  =    `mu_`st'_early_ong'
	matrix res_table[`counter',2]  =	`mu_`st'_early_fin'
	matrix res_table[`counter',3]  =	`diff_`st'_early'
	matrix res_table[`counter',4]  =	`p_`st'_early'
	matrix res_table[`counter',5]  =	`mu_`st'_late_ong'
	matrix res_table[`counter',6]  =	`mu_`st'_late_fin'
	matrix res_table[`counter',7]  =	`diff_`st'_late'
	matrix res_table[`counter',8]  =	`p_`st'_late'
	matrix res_table[`counter',9]  =	`diff_diff_`st''
	matrix res_table[`counter',10] =	`p_diff_diff_`st''

	local ++counter	
}

matrix list res_table, format(%9.2f)  
						
********************Place results into Excel with Put Excel*********************
putexcel clear
putexcel set ///
"11 Appendix Table 1.xlsx", replace

// Name rows notice blank row for word "Sector" notice spaces in front of sectors
local counter = 3

foreach rn in "Budget(ln)" "Duration" "Pacific" "Sector" "  Agriculture" "  Resilience" ///
	"  Education" "  Governance" "  Other" "  Health" "  Economic"	{
	
	putexcel B`counter'="`rn'", bold
	local ++counter	
}

// Label columns 
local counter = 3
foreach cn in "Early Ongoing" "Early Final" "Diff" "p-value" ///
	"Late Ongoing" "Late Final" "Diff" "p-value" ///
	"Diff Diffs" "p-value" {

	excelcol `counter'
	local cc `r(column)'

	putexcel `cc'2 ="`cn'", bold
	local ++counter
}	

// Insert data. Note that two loops are required so that you can 
// Skip past the blank row you want in the results table.
	
forvalue rn = 3/5 {
	forvalue cn = 3/12 {
		excelcol `cn'
		local cl `r(column)'
		putexcel `cl'`rn' = res_table[`rn'-2,`cn'-2], nformat("#,##0.00")  
	}	
}

forvalue rn = 7/14 {
	forvalue cn = 3/12 {
		excelcol `cn'
		local cl `r(column)'
		putexcel `cl'`rn' = res_table[`rn'-3,`cn'-2], nformat("#,##0.00")  
	}	
}

estimates clear 
restore 



********************************************************************************
*********************************Appendix 2*************************************
********************************************************************************
/* Table in Appendix 2
   
   The table shows the results of the basic 2 by 2 diff in diff in the paper
   but recalculated using Donald and Lang's approach for a small number of 
   clusters:
   
   Approach is simple: 
   1. Run diff in diff regressions.
   2. Put output into table using esttab
   
*/

*****************************Preliminaries**************************************

cd "$data_loc"  // Change directory to location where data are stored.
use "$data_file", clear // Open data
cd "$res_loc" // Change directory to location where analysis will occur.

local projectcontrols "duration lnbudget i.pacific" // project-related control variables


*******************************Regressions**************************************

didregress (ee) (treated), ///
	group(finalreport) time(year) aggregate(dlang)  
estimates store d

didregress (ee `projectcontrols' i.covid) (treated), ///
	group(finalreport) time(year) aggregate(dlang)  
estimates store d_controls

esttab d d_controls using "12 Appendix 2 Donald and Lang.rtf", replace ///
	b(2) se(2) star(* 0.1 ** 0.05 *** 0.01) ///
	nobase nogap nodep noconst label nomtitle eqlabels(none) varwidth(25) modelwidth(6) ///
	drop(*year _cons) indicate("Project Controls = *covid") /// ///
	rename(1.finalreport#1.post2018 "Diff in Diff" r1vs0.treated "Diff in Diff") ///
	order("Diff in Diff") ///
	note("Donald and Lang Aggregation used in both models.") ///
	fonttbl(\f0\fnil Calibri; )

// Note that all project controls (and covid) are placed into the second model.
// However the other controls are not passed on into the D & L output and so
// cannot be inserted into the "indicate" command in esttab.
	
estimates clear


********************************************************************************
*********************************Appendix 3*************************************
********************************************************************************
// Appendix 3 is a text appendix and is not produced in Stata


********************************************************************************
*********************************Appendix 4*************************************
********************************************************************************
/* 
Appendix shows the effect of external review on the average performance score
for Papua New Guinea. 

The chart showing this is in the main paper. The appendix shows that the
result is the product of external assessment, and not some other issue, such
as trends over time, covid or sectoral composition.

Analysis is simple: run a regression controlling for confounding factors
and export results using esttab.

*/

******************************Preliminaries*************************************

cd "$data_loc"  // Change directory to location where data are stored.
use "$data_file", clear // Open data
cd "$res_loc" // Change directory to location where analysis will occur.

preserve

encode country, gen(c)   // To cluster by country, country must be encoded.
drop if humanitarian ==1 // Remove humanitarian emergency projects;
                         // they are not used in any analysis in this paper.

gen png=0  // Create PNG dummy
replace png=1 if country=="Papua New Guinea"
label define pnglab 0 "Elsewhere" 1 "PNG"
label values png pnglab
label var png "Papua New Guinea"


*******************************Regressions**************************************

// Basic regression comparing externally reviewed performance scores with those
// that were not.
qui reg ee i.png##i.treated, vce(cluster pnencode)
estimates store basic

// Add controls for time period (pre/post 2018) and report type.
qui reg ee i.png##i.treated i.post2018 i.finalreport, vce(cluster pnencode)
estimates store controls

// Regression with control variables added as well
qui reg ee i.png##i.treated i.post2018 i.finalreport i.covid ///
	i.sector duration lnbudget i.pacific, vce(cluster pnencode)
estimates store fullcontrols

// Table of results
esttab basic controls fullcontrols using "13 Appendix 4 - PNG analysis.rtf", replace ///
	b(2) se(2) star(* 0.1 ** 0.05 *** 0.01) ///
	nogap nomtitle label nobase varwidth(30) modelwidth(8) ///
	indicate("Project Controls = duration lnbudget *pacific *covid *sector") ///
	coeflabels(1.png#1.treated "PNG * External assess") ///
	order(1.png#1.treated) /// 
	note(The coefficient PNG*External assess indicates whether the average ///
	performance score in PNG differs between projects with performance ///
	appraisals that were not externally reviewed and those that were. ///
	Model 2 controls for report type and period. In Model 3 additional ///
	controls were added for project duration, budget, whether the project ///
	occurred in the Covid pandemic period, and whether the project was in ///
	the Pacific or not. Sector fixed effects were also added to Model 3. ///
	Robust standard errors clustered at the project level. ///
	* p < 0.1, ** p < 0.05, *** p < 0.01.) ///
	fonttbl(\f0\fnil Calibri; )

estimates clear

restore


********************************************************************************
*********************************Appendix 5*************************************
********************************************************************************
/* 
   In this analysis project effectiveness and project efficiency are analysed 
   separately. Also, binary variables for each, based on whether the project
   was above DFAT's cutoff for satisfactory performance are also analysed.
   
   First 2 by 2 models of each are produced. Then dynamic models showing change
   over time are produced.
  */

cd "$data_loc"  // Change directory to location where data are stored.
use "$data_file", clear // Open data
cd "$res_loc" // Change directory to location where analysis will occur.

preserve

drop if humanitarian==1 // Remove humanitarian emergency projects;
                        // they are not used in any analysis in this paper.

**************************2 by 2 DiD Effectiveness******************************

local projectcontrols "duration lnbudget i.pacific"

// Basic regression (effectiveness on 1-6 scale)
qui reg effectiveness i.finalreport##i.post2018, vce(cluster pnencode)
estimates store es_c, title("Continuous Basic")

// Controls added  (effectiveness on 1-6 scale)
qui reg effectiveness i.finalreport##i.post2018 `projectcontrols' i.covid, ///
vce(cluster pnencode)
estimates store es_c_control, title("Continuous controls")

// Project fixed effects  (effectiveness on 1-6 scale)
qui areg effectiveness i.year i.treated if any_issue==0 & humanitarian==0, ///
	absorb(pnencode) vce(cluster pnencode)
	estimates store es_c_pfe, title("Continuous Proj FE")

// Basic regression (satisfactory effectiveness binary)	
qui reg sateft i.finalreport##i.post2018, vce(cluster pnencode)
estimates store es_b, title("Binary Basic")

// Regression with controls (satisfactory effectiveness binary)
qui reg sateft i.finalreport##i.post2018 `projectcontrols' i.covid, ///
	vce(cluster pnencode)
estimates store es_b_control, title("Binary controls")

// Project fixed effects (satisfactory effectiveness binary)
qui areg sateft i.year i.treated if any_issue==0 & humanitarian==0, ///
	absorb(pnencode) vce(cluster pnencode)
	estimates store es_b_pfe, title("Binary Proj FE")	

esttab es_c es_c_control es_c_pfe es_b es_b_control es_b_pfe ///
	using "14 Appendix 5 Tables.rtf", replace ///
	b(2) se(2) star(* 0.1 ** 0.05 *** 0.01) ///
	nobase nogap nodep noconst label mtitle eqlabels(none) varwidth(25) modelwidth(6) ///
	indicate("Project Controls = duration lnbudget *pacific *covid" "Project FE = *year") ///
	rename(1.finalreport#1.post2018 "Diff in Diff" 1.treated "Diff in Diff") ///
	order("Diff in Diff") drop(_cons) title("Effectiveness") ///
	note(In models 1-3 the dependent variable is a continuous measure of ///
	effectiveness on a 6 point scale. In models 4-6 the dependent variable /// 
	is a binary coded 0 if the project scored 3 or less, or 1 if it scored more ///
	than 3 (satisfactory performance). The project controls used were: project ///
	duration, budget, whether the project occurred in the Covid pandemic period, ///
	and whether the project was in the Pacific or not. Linear regressions ///
	used in all models. In all models robust standard errors are clustered at ///
	the project level.) ///
	fonttbl(\f0\fnil Calibri; )	
	
estimates clear	

*****************************2 by 2 DiD Efficency*******************************

local projectcontrols "duration lnbudget i.pacific"

// Basic regression (efficiency on 1-6 scale)
qui reg efficiency i.finalreport##i.post2018, vce(cluster pnencode)
estimates store ey_c, title("Continuous Basic")

// Controls added  (efficiency on 1-6 scale)
qui reg efficiency i.finalreport##i.post2018 `projectcontrols' i.covid, ///
	vce(cluster pnencode)
estimates store ey_c_control, title("Continuous controls")

// Project fixed effects  (efficiency on 1-6 scale)
qui areg efficiency i.year i.treated if any_issue==0 & humanitarian==0, ///
	absorb(pnencode) vce(cluster pnencode)
	estimates store ey_c_pfe, title("Continuous Proj FE")

// Basic regression (satisfactory efficiency binary)	
qui reg satefy i.finalreport##i.post2018, vce(cluster pnencode)
estimates store ey_b, title("Binary Basic")

// Regression with controls (satisfactory efficiency binary)
qui reg satefy i.finalreport##i.post2018 `projectcontrols' i.covid, ///
	vce(cluster pnencode)
estimates store ey_b_control, title("Binary controls")

// Project fixed effects (satisfactory efficiency binary)
qui areg satefy i.year i.treated if any_issue==0 & humanitarian==0, ///
	absorb(pnencode) vce(cluster pnencode)
	estimates store ey_b_pfe, title("Binary Proj FE")	

esttab ey_c ey_c_control ey_c_pfe ey_b ey_b_control ey_b_pfe ///
	using "14 Appendix 5 Tables.rtf", append ///
	b(2) se(2) star(* 0.1 ** 0.05 *** 0.01) ///
	nobase nogap nodep noconst label mtitle eqlabels(none) varwidth(25) modelwidth(6) ///
	indicate("Project Controls = duration lnbudget *pacific *covid" "Project FE = *year") ///
	rename(1.finalreport#1.post2018 "Diff in Diff" 1.treated "Diff in Diff") ///
	order("Diff in Diff") drop(_cons) title("Efficiency") ///
	note(In models 1-3 the dependent variable is a continuous measure of ///
	efficiency on a 6 point scale. In models 4-6 the dependent variable /// 
	is a binary coded 0 if the project scored 3 or less, or 1 if it scored more ///
	than 3 (satisfactory performance). Linear regressions used in all models. ///
	The project controls applied were: project duration, budget, whether the ///
	project occurred in the Covid pandemic period, and whether the project was ///
	in the Pacific or notIn all models robust standard errors are clustered at ///
	the project level.) ///
	fonttbl(\f0\fnil Calibri; )	
	
estimates clear	

restore

******************************Dynamic models************************************

// Preliminaries 
cd "$data_loc"  // Change directory to location where data are stored.
use "$data_file", clear // Open data
cd "$res_loc" // Change directory to location where analysis will occur.

preserve

drop if any_issue==1  // drop projects with issues when run over time.
xtset pnencode year

//Effectiveness regressions (continuous and binary DV)
qui xtreg effectiveness i.pnencode i.finalreport##ib2018.year /// 
	if any_issue==0 & humanitarian==0 , fe vce(cluster pnencode)
margins, dydx(finalreport) at (year=(2015(1)2022)) noestimcheck post
estimates store es_cont, title("Effectiveness continuous")

qui xtreg sateft i.pnencode i.finalreport##ib2018.year /// 
	if any_issue==0 & humanitarian==0 , fe vce(cluster pnencode)
margins, dydx(finalreport) at (year=(2015(1)2022)) noestimcheck post
estimates store es_b, title("Effectiveness Binary")

//Efficiency regressions (continuous and binary DV)
qui xtreg efficiency i.pnencode i.finalreport##ib2018.year /// 
	if any_issue==0 & humanitarian==0 , fe vce(cluster pnencode)
margins, dydx(finalreport) at (year=(2015(1)2022)) noestimcheck post
estimates store ey_cont, title("Efficiency continuous")

qui xtreg satefy i.pnencode i.finalreport##ib2018.year /// 
	if any_issue==0 & humanitarian==0 , fe vce(cluster pnencode)
margins, dydx(finalreport) at (year=(2015(1)2022)) noestimcheck post
estimates store ey_b, title("Efficiency Binary")

// All output into 1 table
esttab es_cont es_b ey_cont ey_b using "14 Appendix 5 Tables.rtf", append ///
	b(2) se(2) star(* 0.1 ** 0.05 *** 0.01) varwidth(12) modelwidth(8) ///
	title("Dynamic model") nobase nogap nodep noconst noomitted label mtitle ///
	eqlabels(none) rename(1._at "2015" 2._at "2016" 3._at "2017" ///
	4._at "2018" 5._at "2019" 6._at "2020" 7._at "2021" 8._at "2022") ///
	note(In models 1 & 2 the dependent variable is effectiveness. ///
	In models 3 & 4 the dependent variable is efficiency. In models 1 & 3 the /// 
	dependent variables are continuous on a 6 point scale. In models 2 & 4 the ///
	dependent variable is a binary coded 0 if the project scored 3 or less, ///
	or 1 if it scored more than 3 (satisfactory performance). ///
	Linear regressions used in all models. In all models project fixed effects ///
	have been added. In all models robust standard errors /// 
	are clustered at the project level.) fonttbl(\f0\fnil Calibri; )

estimates clear
restore


********************************************************************************
*********Appendix 6 2 by 2 DiD excluding Covid years & early years**************
********************************************************************************

/*
This code:
First, re-runs the main 2 by 2 DiD regression models excluding the Covid years.
Second, re-runs the main 2 by 2 DiD models excluding 2016 and prior years.
*/


encode country, gen(cencode) // encoding variable country so it can be used for fixed effects.

//// First exclude the Covid years.
preserve
drop if covid==1
	
// Project traits controlled for in some models.	
local projectcontrols "duration lnbudget i.pacific" 

// Basic models	
//model 1
qui reg ee i.finalreport##i.post2018, vce(cluster pnencode)
estimates store tbt
//model 2
qui reg ee i.finalreport##i.post2018 `projectcontrols', vce(cluster pnencode)
estimates store tbtcont	

//model 3, with sector fixed effects
qui reg ee i.finalreport##i.post2018 `projectcontrols' i.sector, vce(cluster pnencode)
estimates store tbtcontsfe	

//model 4, with country fixed effects
qui reg ee i.finalreport##i.post2018 `projectcontrols' i.cencode, vce(cluster pnencode)
estimates store tbtcontcfe

//model 5, sector and country FEs.
qui reg ee i.finalreport##i.post2018 `projectcontrols' i.sector i.cencode, vce(cluster pnencode)
estimates store tbtcontcsfe	
	
//model 6, project FEs
areg ee i.year i.treated if any_issue==0 & humanitarian==0, ///
	absorb(pnencode) vce(cluster pnencode)
estimates store pf

// Results to table
esttab tbt tbtcont tbtcontsfe tbtcontcfe tbtcontcsfe pf ///
	using "15 Appendix 6 Results CS FE.rtf", replace title("Covid years excluded") ///
	b(2) se(2) star(* 0.1 ** 0.05 *** 0.01) ///
	nobase nogap nodep noconst label nomtitle eqlabels(none) varwidth(15) modelwidth(6) ///
	indicate("Sector FE = *sector" "Country FE = *cencode" "Project FE = *year" ///
	"Project Controls = duration lnbudget *pacific") /// 
	rename(1.finalreport#1.post2018 "Diff in Diff" r1vs0.treated "Diff in Diff" ///
	1.treated "Diff in Diff") order("Diff in Diff") ///
	note(This table reproduces Table 4 in the main text but with all project ///
	assessments from the COVID-19 period excluded as a robustness test. ///
	The dependent variable in all models is assessed project performance. ///
	Performance scores range between 1 and 6. Robust standard errors are clustered ///
	at the project level in all models. The coefficient "Diff in Diff" captures ///
	the change in differences between appraisals of ongoing projects and appraisals of ///
	completed projects that occurred when independent review was introduced. ///
	The control variables included in Model 2 are the natural log of project ///
	size, project duration and whether the project was in the Pacific or not. ///
	Model 3 contains country fixed effects. Model 4 contains sector fixed effects. ///
	Model 5 contains country and sector fixed effects. Model 6 contains project ///
	fixed effects - its sample size is smaller because some projects could not ///
	be tracked over time.) fonttbl(\f0\fnil Calibri; )
	
estimates clear	

restore

//// Now exclude data from 2014 & 2015

preserve

drop if year<2017 // The aid cuts were in the 2015-16 FYr (aka 2016 in our data).

local projectcontrols "duration lnbudget i.pacific"

// Basic models	
//model 1
qui reg ee i.finalreport##i.post2018, vce(cluster pnencode)
estimates store tbt

//model 2, project controls
qui reg ee i.finalreport##i.post2018 `projectcontrols', vce(cluster pnencode)
estimates store tbtcont	

//model 3, sector fe
qui reg ee i.finalreport##i.post2018 `projectcontrols' i.sector, vce(cluster pnencode)
estimates store tbtcontsfe	

//model 4, country fe
qui reg ee i.finalreport##i.post2018 `projectcontrols' i.cencode, vce(cluster pnencode)
estimates store tbtcontcfe

//model 5, controls, sector fe & country fe
qui reg ee i.finalreport##i.post2018 `projectcontrols' i.sector i.cencode, vce(cluster pnencode)
estimates store tbtcontcsfe	
	
//model 5, project fe
areg ee i.year i.treated if any_issue==0 & humanitarian==0, ///
	absorb(pnencode) vce(cluster pnencode)
estimates store pf

// Results to table
esttab tbt tbtcont tbtcontsfe tbtcontcfe tbtcontcsfe pf ///
	using "15 Appendix 6 Results CS FE.rtf", append title("Aid cut years excluded") ///
	b(2) se(2) star(* 0.1 ** 0.05 *** 0.01) ///
	nobase nogap nodep noconst label nomtitle eqlabels(none) varwidth(15) modelwidth(6) ///
	indicate("Sector FE = *sector" "Country FE = *cencode" "Project FE = *year" ///
	"Project Controls = duration lnbudget *pacific") /// 
	rename(1.finalreport#1.post2018 "Diff in Diff" r1vs0.treated "Diff in Diff" ///
	1.treated "Diff in Diff") order("Diff in Diff") ///
	note(This table reproduces Table 4 in the main text but with all project ///
	assessments from 2014-2016 excluded to demonstrate robustness to ///
	the large 2015/16 aid cuts. ///
	The dependent variable in all models is assessed project performance. ///
	Performance scores range between 1 and 6. Robust standard errors are clustered ///
	at the project level in all models. The coefficient "Diff in Diff" captures ///
	the change in differences between appraisals of ongoing projects and appraisals of ///
	completed projects that occurred when independent review was introduced. ///
	The control variables included in Model 2 are the natural log of project ///
	size, project duration and whether the project was in the Pacific or not. ///
	Model 3 contains country fixed effects. Model 4 contains sector fixed effects. ///
	Model 5 contains country and sector fixed effects. Model 6 contains project ///
	fixed effects - its sample size is smaller because some projects could not ///
	be tracked over time.) fonttbl(\f0\fnil Calibri; )

estimates clear
restore
